package com.stars.services;

import com.stars.common.base.ResultMsg;
import com.stars.common.chart.DataDTO;
import com.stars.common.enums.AutoCodeTypeEnum;

import java.util.List;
import java.util.Map;

/**
 * Created by luodajie on 2019/1/5.
 *  查询
 */
public interface BaseAccessService<T> {
    /**
     * 根据实体中的属性进行查询，只能有一个返回值，有多个结果是抛出异常，查询条件使用等号
     * @param entity
     * @return
     */
    T selectOne(T entity);

    /**
     * 根据主键字段进行查询，方法参数必须包含完整的主键属性，查询条件使用等号
     * @param id
     * @return
     */
    T selectById(Object id);

    /**
     * 根据实体中的属性值进行查询，查询条件使用等号
     * @param entity
     * @return
     */
    List<T> selectList(T entity);

    /**
     * 根查询全部结果，select(null)方法能达到同样的效果
     * @return
     */
    List<T> selectListAll();

    /**
     * 根据实体中的属性查询总数，查询条件使用等号
     * @param entity
     * @return
     */
    Long selectCount(T entity);

    /**
     * 根据Example条件进行查询
     * 重点：这个查询支持通过Example类指定查询列，通过selectProperties方法指定查询列
     * @param example
     * @return
     */
    List<T> selectByExample(Object example);

    /**
     * 根据Example条件进行查询总数
     * @param example
     * @return
     */
    int selectCountByExample(Object example);

}
